/**
 * 类型断言
 */

export {}

// ts在无法推断出一个变量的具体类型时，需要用到类型断言

// 假设nums来自一个明确的接口
const nums = [110, 120, 119, 112]

// ts推断res为number | undefined，将res作为数字使用时就会报错，而我们明确知道res为数值类型，可以做断言
const res = nums.find(i => i > 0)

// const square = res * res

// as方式断言
const num1 = res as number

// <>方式断言，在jsx下会有冲突，不建议使用
const num2 = <number>res

const square = num1 * num2

// 类型断言和类型转换有本质上的差异，类型转换是在运行阶段发生的，而类型断言用于编译阶段，编译完就会移除
